package com.lam.framework.operLog.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.lam.framework.operLog.enums.BusinessType;
import com.lam.framework.operLog.enums.LogSave;
import com.lam.framework.operLog.enums.OperatorType;

/**
 * 自定义日志记录注解
 * <p><b>对于该注解的属性值，未说明的情况下，都是只支持方法级别</b>
 * @author lam
 *
 */
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Log {
	
	/**
	 * 模块名称
	 * <p><b>只支持类级别</b>
	 */
	String title() default "";
	
	/** 功能描述  */
	String oper() default "";

	/** 业务操作类型  */
	BusinessType businessType() default BusinessType.QUERY;

	/** 操作人类别 */
	OperatorType operatorType() default OperatorType.AUTO;
	
	/** 是否记录操作日志 */
	LogSave logSave() default LogSave.AUTO;

	/** 是否保存请求的参数 */
	boolean saveReqData() default true;
	
	/** 是否保存返回的结果 */
	boolean saveResData() default true;
	
	/** 是否在请求日志里面打印请求参数 */
	boolean printReqData() default true;
	
	/** 是否在请求日志里面打印返回结果 */
	boolean printResData() default true;
	
	/** 是否打印运行耗时，默认打印 */
	boolean elapsedTime() default true;
	
	/** 是否打印请求来源ip，默认打印 */
	boolean printIp() default true;
}
